ফাইল ভ্যালিডেশন এবং Errors হ্যান্ডলিং

Web Development - কোডইগনাইটার (Codeigniter) - CodeIgniter এর ফাইল আপলোড এবং ম্যানেজমেন্ট |

CodeIgniter ফ্রেমওয়ার্কে ফাইল আপলোড করার জন্য একটি বিল্ট-ইন File Uploading Class রয়েছে। এই ক্লাস ব্যবহার করে ফাইল আপলোড এবং তার ভ্যালিডেশন সহজে করা যায়। ফাইল ভ্যালিডেশন সঠিকভাবে পরিচালনা করলে ব্যবহারকারীর ভুল ইনপুট বা অবৈধ ফাইল থেকে সিস্টেম সুরক্ষিত থাকে।


ফাইল আপলোড সেটআপ

Controller উদাহরণ:

ফাইল আপলোড প্রক্রিয়া পরিচালনার জন্য একটি Controller তৈরি করুন।

<?php
namespace App\Controllers;

use CodeIgniter\Controller;

class FileUpload extends Controller {
    public function upload() {
        helper(['form', 'url']);

        // ফাইল ভ্যালিডেশন নিয়ম
        $rules = [
            'file' => 'uploaded[file]|max_size[file,2048]|ext_in[file,jpg,jpeg,png,gif]'
        ];

        if (!$this->validate($rules)) {
            // ত্রুটি বার্তা
            return view('upload_form', [
                'validation' => $this->validator
            ]);
        } else {
            $file = $this->request->getFile('file');

            if ($file->isValid() && !$file->hasMoved()) {
                $file->move(WRITEPATH . 'uploads');
                return view('upload_form', ['success' => 'File uploaded successfully!']);
            } else {
                return view('upload_form', ['error' => $file->getErrorString()]);
            }
        }
    }
}

ফাইল ভ্যালিডেশন নিয়ম

ভ্যালিডেশন রুলস:

  1. uploaded[file]: চেক করে ফাইল আপলোড হয়েছে কিনা।
  2. max_size[file,2048]: ফাইলের সর্বোচ্চ সাইজ সীমা (কিলোবাইটে)।
  3. ext_in[file,jpg,jpeg,png,gif]: অনুমোদিত ফাইল এক্সটেনশন চেক করে।
  4. mime_in[file,image/jpg,image/jpeg,image/png,image/gif]: ফাইলের MIME টাইপ যাচাই করে।

ভ্যালিডেশন উদাহরণ:

$rules = [
    'file' => 'uploaded[file]|max_size[file,2048]|ext_in[file,jpg,jpeg,png,gif]|mime_in[file,image/jpg,image/jpeg,image/png,image/gif]'
];

View ফাইল উদাহরণ

app/Views/upload_form.php ফাইল তৈরি করুন:

<!DOCTYPE html>
<html>
<head>
    <title>File Upload</title>
</head>
<body>
    <h1>Upload a File</h1>

    <!-- ত্রুটি বার্তা -->
    <?php if (isset($validation)): ?>
        <div style="color: red;">
            <?= $validation->listErrors(); ?>
        </div>
    <?php endif; ?>

    <!-- সফল বার্তা -->
    <?php if (isset($success)): ?>
        <div style="color: green;">
            <?= $success; ?>
        </div>
    <?php endif; ?>

    <!-- ফর্ম -->
    <form action="/fileupload/upload" method="post" enctype="multipart/form-data">
        <?= csrf_field(); ?>
        <label for="file">Choose a file:</label>
        <input type="file" name="file" id="file">
        <button type="submit">Upload</button>
    </form>

    <!-- ত্রুটি -->
    <?php if (isset($error)): ?>
        <div style="color: red;">
            <?= $error; ?>
        </div>
    <?php endif; ?>
</body>
</html>

ফাইল Errors হ্যান্ডলিং

Common Errors এবং তাদের সমাধান:

  1. The file was not uploaded:
    • ফাইল আপলোড ছাড়া ফর্ম সাবমিট হয়েছে।
    • সমাধান: uploaded[file] রুল ব্যবহার করুন।
  2. The file exceeds the maximum allowed size:
    • আপলোডকৃত ফাইলের সাইজ সীমার বাইরে।
    • সমাধান: max_size[file,2048] দিয়ে সাইজ সীমা বাড়ান।
  3. The filetype you are attempting to upload is not allowed:
    • অবৈধ ফাইল টাইপ।
    • সমাধান: ext_in[file,jpg,png] এবং mime_in রুল ব্যবহার করুন।
  4. The file you are attempting to upload exceeds your server's maximum allowed size:
    • সার্ভারের php.ini ফাইলের কনফিগারেশন পরিবর্তন করুন:

      upload_max_filesize = 5M
      post_max_size = 8M
      

ফাইল Errors চেক করার জন্য Method:

if ($file->hasMoved()) {
    echo "File already moved!";
}

if (!$file->isValid()) {
    echo $file->getErrorString();
}

ফাইল সংরক্ষণ অবস্থান নির্ধারণ

ডিফল্ট লোকেশন পরিবর্তন:

আপনার ফাইল সংরক্ষণের জন্য কাস্টম লোকেশন নির্ধারণ করতে পারেন:

$file->move(WRITEPATH . 'custom_uploads');

ফাইলের নতুন নাম নির্ধারণ:

$file->move(WRITEPATH . 'uploads', 'new_filename.jpg');

ফাইলের তথ্য পড়া

আপলোডকৃত ফাইল থেকে বিস্তারিত তথ্য পেতে পারেন:

$file = $this->request->getFile('file');
echo $file->getName();        // ফাইলের নাম
echo $file->getSize();        // সাইজ (বাইটে)
echo $file->getExtension();   // এক্সটেনশন
echo $file->getMimeType();    // MIME টাইপ

সারসংক্ষেপ

CodeIgniter-এ ফাইল ভ্যালিডেশন এবং Errors হ্যান্ডলিং একটি শক্তিশালী ফিচার। এটি ব্যবহারকারীর অবৈধ ইনপুট এবং সিস্টেমের ডেটা ক্ষতির ঝুঁকি কমায়। সঠিকভাবে ফাইল ভ্যালিডেশন এবং Errors হ্যান্ডলিং করলে অ্যাপ্লিকেশনের নিরাপত্তা এবং কার্যকারিতা বৃদ্ধি পায়।

Content added By
Promotion